
var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (value) {
    return typeof value;
} : function (value) {
    return value && "function" == typeof Symbol && value.constructor === Symbol && value !== Symbol.prototype ? "symbol" :
        typeof value;
};


function _defineProperty(e, t, n) {
    return t in e ? Object.defineProperty(e, t, {
        value: n,
        enumerable: !0,
        configurable: !0,
        writable: !0
    }) : e[t] = n, e;
}

var util = {};

function getQuery(e) {
    var t = [];
    if (-1 != e.indexOf("?"))
        for (var n = e.split("?")[1].split("&"), a = 0; a < n.length; a++) n[a].split("=")[0] && unescape(n[a].split(
            "=")[1]) && (t[a] = {
            name: n[a].split("=")[0],
            value: unescape(n[a].split("=")[1])
        });
    return t;
}

function getUrlParam(e, t) {
    var n = new RegExp("(^|&)" + t + "=([^&]*)(&|$)"),
        a = e.split("?")[1].match(n);
    return null != a ? unescape(a[2]) : null;
}

function getSign(e, t, n) {
    var a = require("we7/resource/js/underscore.js"),
        r = require("we7/resource/js/md5.js"),
        i = "",
        o = getUrlParam(e, "sign");
    if (o || t && t.sign) return !1;
    if (e && (i = getQuery(e)), t) {
        var s = [];
        for (var u in t) u && t[u] && (s = s.concat({
            name: u,
            value: t[u]
        }));
        i = i.concat(s);
    }
    i = a.sortBy(i, "name"), i = a.uniq(i, !0, "name");
    for (var c = "", f = 0; f < i.length; f++) i[f] && i[f].name && i[f].value && (c += i[f].name + "=" + i[f].value,
    f < i.length - 1 && (c += "&"));
    return o = r(c + (n = n || getApp().globalData.siteinfo.token));
}

util.url = function (e, t) {
    console.log(getApp());
    console.log(getApp().globalData.siteinfo);
    var n = getApp(),
        a = n.globalData.siteinfo.siteroot + "?i=" + n.globalData.siteinfo.uniacid + "&t=" + n.globalData.siteinfo
            .multiid + "&v=" + n.globalData.siteinfo.version + "&from=wxapp&";
    if (e && ((e = e.split("/"))[0] && (a += "c=" + e[0] + "&"), e[1] && (a += "a=" + e[1] + "&"),
    e[2] && (a += "do=" + e[2] + "&")), t && "object" === (void 0 === t ? "undefined" : _typeof(t)))
        for (var r in t) r && t.hasOwnProperty(params) && t[r] && (a += r + "=" + t[r] + "&");
    return a;
}

util.request = function (a) {
    require("we7/resource/js/underscore.js");
    var e, t = require("we7/resource/js/md5.js"),
        r = getApp();
    (a = a || {}).cachetime = a.cachetime ? a.cachetime : 0;
    var n = wx.getStorageSync("userInfo").sessionid, i = a.url;
    if (-1 == i.indexOf("http://") && -1 == i.indexOf("https://") && (i = util.url(i)),
    getUrlParam(i, "state") || a.data && a.data.state || !n || (i = i + "&state=we7sid-" + n),
    !a.data || !a.data.m) {
        var o = getCurrentPages();
        console.log("当前页面数据", o)
        //大牙
        // o.length && (o = o[getCurrentPages().length - 1]) && o.__route__ && (i = i + "&m=" + o.__route__.split("/")[0]);
        o.length && (o = o[getCurrentPages().length - 1]) && o.route && (i = i + "&m=" + o.route.split("/")[0]);
    }
    var s = getSign(i, a.data);
    if (s && (i = i + "&sign=" + s), !i) return !1;
    if (wx.showNavigationBarLoading(), a.showLoading && util.showLoading(), a.cachetime) {
        var u = t(i),
            c = wx.getStorageSync(u),
            f = Date.parse(new Date());
        if (c && c.data) {
            if (c.expire > f) return a.complete && "function" == typeof a.complete && a.complete(c),
            a.success && "function" == typeof a.success && a.success(c), console.log("cache:" + i),
                wx.hideLoading(), wx.hideNavigationBarLoading(), !0;
            wx.removeStorageSync(u);
        }
    }


    let header = a.header ? a.header : {}

    if (a.no_token != true) {
        header["content-type"] = "application/x-www-form-urlencoded"
        header["dy-token"] = uni.getStorageSync("dy-token")
    }

    uni.request({
        url: i,
        data: a.data ? a.data : {},
        header: header,
        method: a.method ? a.method : "GET",
        dataType: 'json',
        timeout:60000,
        success: function (e) {
            wx.hideNavigationBarLoading()
            wx.hideLoading()

            if (e.data && e.data.code != undefined && e.data.code == 0 && e.data.msg && e.data.msg.indexOf('未登录') >= 0) {
                console.log("未登录 需要跳转到登录界面")
                uni.$u.toast(e.data.msg);
                //     未登录,跳转到登录页面
                uni.reLaunch({
                    url: '/ymq_canyino2o/pages/my2/index?is_show_login=1'
                })
            }

            if (e.data.errno) {
                if ("41009" == e.data.errno) return wx.setStorageSync("userInfo", ""), void util.getUserInfo(function () {
                    util.request(a);
                });
                if (a.fail && "function" == typeof a.fail) {
                    a.fail(e);
                } else if (e.data.message) {
                    if (null != e.data.data && e.data.data.redirect) {
                        var t = e.data.data.redirect;
                    } else {
                        t = "";
                    }
                    r.util.message(e.data.message, t, "error");
                }
            } else if (a.success && "function" == typeof a.success && a.success(e), a.cachetime) {
                var n = {
                    data: e.data,
                    expire: f + 1e3 * a.cachetime
                };
                wx.setStorageSync(u, n);
            }
        },
        fail: function (e) {
            wx.hideNavigationBarLoading(), wx.hideLoading();
            var t = require("we7/resource/js/md5.js")(i),
                n = wx.getStorageSync(t);
            if (n && n.data) return a.success && "function" == typeof a.success && a.success(n),
                console.log("failreadcache:" + i), !0;
            a.fail && "function" == typeof a.fail && a.fail(e);
        },
        complete: function (e) {
            a.complete && "function" == typeof a.complete && a.complete(e);
        }
    })


}

util.getUserInfo = function (n) {
    var e = function () {
            console.log("start login");
            var t = {
                sessionid: "",
                wxInfo: "",
                memberInfo: ""
            };
            wx.login({
                success: function (e) {
                    util.request({
                        url: "auth/session/openid",
                        // url: "entry/wxapp/openid",
                        data: {
                            code: e.code
                        },
                        cachetime: 0,
                        success: function (e) {
                            e.data.errno || (t.sessionid = e.data.data.sessionid, wx
                                .setStorageSync("userInfo", t),
                                wx.getUserInfo({
                                    success: function (e) {
                                        t.wxInfo = e.userInfo, wx
                                            .setStorageSync("userInfo", t), util
                                            .request({
                                                url: "auth/session/userinfo",
                                                data: {
                                                    signature: e.signature,
                                                    rawData: e.rawData,
                                                    iv: e.iv,
                                                    encryptedData: e
                                                        .encryptedData
                                                },
                                                method: "POST",
                                                header: {
                                                    "content-type": "application/x-www-form-urlencoded"
                                                },
                                                cachetime: 0,
                                                success: function (e) {
                                                    e.data.errno || (t
                                                        .memberInfo =
                                                        e.data.data,
                                                        wx
                                                            .setStorageSync(
                                                                "userInfo",
                                                                t)),
                                                    "function" ==
                                                    typeof n && n(
                                                        t);
                                                }
                                            });
                                    },
                                    fail: function () {
                                    },
                                    complete: function () {
                                    }
                                }));
                        }
                    });
                },
                fail: function () {
                    wx.showModal({
                        title: "获取信息失败",
                        content: "请允许授权以便为您提供给服务",
                        success: function (e) {
                            e.confirm && util.getUserInfo();
                        }
                    });
                }
            });
        },
        t = wx.getStorageSync("userInfo");
    t.sessionid ? wx.checkSession({
        success: function () {
            "function" == typeof n && n(t);
        },
        fail: function () {
            t.sessionid = "", console.log("relogin"), wx.removeStorageSync("userInfo"), e();
        }
    }) : e();
}

util.navigateBack = function (t) {
    var e = t.delta ? t.delta : 1;
    if (t.data) {
        var n = getCurrentPages(),
            a = n[n.length - (e + 1)];
        a.pageForResult ? a.pageForResult(t.data) : a.setData(t.data);
    }
    wx.navigateBack({
        delta: e,
        success: function (e) {
            "function" == typeof t.success && t.success(e);
        },
        fail: function (e) {
            "function" == typeof t.fail && t.function(e);
        },
        complete: function () {
            "function" == typeof t.complete && t.complete();
        }
    });
}

util.footer = function (e) {
    var t = e,
        n = getApp().tabBar;
    for (var a in n.list) n.list[a].pageUrl = n.list[a].pagePath.replace(/(\?|#)[^"]*/g, "");
    t.setData({
        tabBar: n,
        //daya
        "tabBar.thisurl": t.route
        // "tabBar.thisurl": t.__route__
    });
}

util.message = function (e, t, n) {
    if (!e) return !0;
    if ("object" == (void 0 === e ? "undefined" : _typeof(e)) && (t = e.redirect, n = e.type,
        e = e.title), t) {
        var a = t.substring(0, 9),
            r = "",
            i = "";
        "navigate:" == a ? (i = "navigateTo", r = t.substring(9)) : "redirect:" == a ? (i = "redirectTo",
            r = t.substring(9)) : (r = t, i = "redirectTo");
    }
    n || (n = "success"), "success" == n ? wx.showToast({
        title: e,
        icon: "success",
        duration: 2e3,
        mask: !!r,
        complete: function () {
            r && setTimeout(function () {
                wx[i]({
                    url: r
                });
            }, 1800);
        }
    }) : "error" == n && wx.showModal({
        title: "系统信息",
        content: e,
        showCancel: !1,
        complete: function () {
            r && wx[i]({
                url: r
            });
        }
    });
}

util.user = util.getUserInfo

util.showLoading = function () {
    wx.getStorageSync("isShowLoading") && (wx.hideLoading(), wx.setStorageSync("isShowLoading", !1)),
        wx.showLoading({
            title: "加载中",
            complete: function () {
                wx.setStorageSync("isShowLoading", !0);
            },
            fail: function () {
                wx.setStorageSync("isShowLoading", !1);
            }
        });
}

util.showImage = function (e) {
    var t = e ? e.currentTarget.dataset.preview : "";
    if (!t) return !1;
    wx.previewImage({
        urls: [t]
    });
}

util.parseContent = function (e) {
    if (!e) return e;
    var t = e.match(new RegExp(["\ud83c[\udf00-\udfff]", "\ud83d[\udc00-\ude4f]", "\ud83d[\ude80-\udeff]"].join(
        "|"), "g"));
    if (t)
        for (var n in t) e = e.replace(t[n], "[U+" + t[n].codePointAt(0).toString(16).toUpperCase() + "]");
    return e;
}

util.date = function () {
    console.log("这里需要手动处理!!!否则uniapp编译报错")
    // this.isLeapYear = function (e) {
    //     return 0 == e.getYear() % 4 && (e.getYear() % 100 != 0 || e.getYear() % 400 == 0);
    // }
    // this.dateToStr = function (e, t) {
    //     e = e || "yyyy-MM-dd HH:mm:ss", t = t || new Date();
    //     var n = e;
    //     return n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = n.replace(/yyyy|YYYY/, t
    //         .getFullYear())).replace(/yy|YY/, 9 < t.getYear() %
    //     100 ? (t.getYear() % 100).toString() : "0" + t
    //         .getYear() % 100)).replace(/MM/, 9 < t.getMonth() ? t
    //         .getMonth() + 1 : "0" + (t.getMonth() + 1))).replace(/M/g, t
    //         .getMonth())).replace(/w|W/g, ["日", "一", "二", "三", "四", "五",
    //         "六"][t.getDay()])).replace(/dd|DD/, 9 < t.getDate() ? t.getDate()
    //         .toString() : "0" + t.getDate())).replace(/d|D/g, t.getDate())).replace(
    //         /hh|HH/, 9 < t.getHours() ? t.getHours().toString() : "0" + t.getHours()))
    //         .replace(/h|H/g, t.getHours())).replace(/mm/, 9 < t.getMinutes() ? t.getMinutes()
    //         .toString() : "0" + t.getMinutes())).replace(/m/g, t.getMinutes())).replace(/ss|SS/, 9 < t
    //         .getSeconds() ? t.getSeconds().toString() : "0" + t.getSeconds())).replace(/s|S/g, t
    //         .getSeconds());
    // }
    // this.dateAdd = function (e, t, n) {
    //     switch (n = n || new Date(), e) {
    //         case "s":
    //             return new Date(n.getTime() + 1e3 * t);
    //
    //         case "n":
    //             return new Date(n.getTime() + 6e4 * t);
    //
    //         case "h":
    //             return new Date(n.getTime() + 36e5 * t);
    //
    //         case "d":
    //             return new Date(n.getTime() + 864e5 * t);
    //
    //         case "w":
    //             return new Date(n.getTime() + 6048e5 * t);
    //
    //         case "m":
    //             return new Date(n.getFullYear(), n.getMonth() + t, n.getDate(), n.getHours(), n.getMinutes(), n
    //                 .getSeconds());
    //
    //         case "y":
    //             return new Date(n.getFullYear() + t, n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n
    //                 .getSeconds());
    //     }
    // }
    // this.dateDiff = function (e, t, n) {
    //     switch (e) {
    //         case "s":
    //             return parseInt((n - t) / 1e3);
    //
    //         case "n":
    //             return parseInt((n - t) / 6e4);
    //
    //         case "h":
    //             return parseInt((n - t) / 36e5);
    //
    //         case "d":
    //             return parseInt((n - t) / 864e5);
    //
    //         case "w":
    //             return parseInt((n - t) / 6048e5);
    //
    //         case "m":
    //             return n.getMonth() + 1 + 12 * (n.getFullYear() - t.getFullYear()) - (t.getMonth() + 1);
    //
    //         case "y":
    //             return n.getFullYear() - t.getFullYear();
    //     }
    // }
    // this.strToDate = function (dateStr) {
    //     var data = dateStr,
    //         reCat = /(\d{1,4})/gm,
    //         t = data.match(reCat);
    //     return t[1] = t[1] - 1, eval("var d = new Date(" + t.join(",") + ");"), d;
    // }
    // this.strFormatToDate = function (e, t) {
    //     var n = 0,
    //         a = -1,
    //         r = t.length;
    //     -
    //         1 < (a = e.indexOf("yyyy")) && a < r && (n = t.substr(a, 4));
    //     var i = 0;
    //     -
    //         1 < (a = e.indexOf("MM")) && a < r && (i = parseInt(t.substr(a, 2)) - 1);
    //     var o = 0;
    //     -
    //         1 < (a = e.indexOf("dd")) && a < r && (o = parseInt(t.substr(a, 2)));
    //     var s = 0;
    //     (-1 < (a = e.indexOf("HH")) || 1 < (a = e.indexOf("hh"))) && a < r && (s = parseInt(t.substr(a, 2)));
    //     var u = 0;
    //     -
    //         1 < (a = e.indexOf("mm")) && a < r && (u = t.substr(a, 2));
    //     var c = 0;
    //     return -1 < (a = e.indexOf("ss")) && a < r && (c = t.substr(a, 2)), new Date(n, i, o, s, u, c);
    // }
    // this.dateToLong = function (e) {
    //     return e.getTime();
    // }
    // this.longToDate = function (e) {
    //     return new Date(e);
    // }
    // this.isDate = function (e, t) {
    //     null == t && (t = "yyyyMMdd");
    //     var n = t.indexOf("yyyy");
    //     if (-1 == n) return !1;
    //     var a = e.substring(n, n + 4),
    //         r = t.indexOf("MM");
    //     if (-1 == r) return !1;
    //     var i = e.substring(r, r + 2),
    //         o = t.indexOf("dd");
    //     if (-1 == o) return !1;
    //     var s = e.substring(o, o + 2);
    //     return !(!isNumber(a) || "2100" < a || a < "1900") && (!(!isNumber(i) || "12" < i || i < "01") && !(s >
    //         getMaxDay(a, i) || s < "01"));
    // }
    // this.getMaxDay = function (e, t) {
    //     return 4 == t || 6 == t || 9 == t || 11 == t ? "30" : 2 == t ? e % 4 == 0 && e % 100 != 0 || e % 400 ==
    //     0 ? "29" : "28" : "31";
    // }
    // this.isNumber = function (e) {
    //     return /^\d+$/g.test(e);
    // }
    // this.toArray = function (e) {
    //     e = e || new Date();
    //     var t = Array();
    //     return t[0] = e.getFullYear(), t[1] = e.getMonth(), t[2] = e.getDate(), t[3] = e.getHours(),
    //         t[4] = e.getMinutes(), t[5] = e.getSeconds(), t;
    // }
    // this.datePart = function (e, t) {
    //     t = t || new Date();
    //     var n = "";
    //     switch (e) {
    //         case "y":
    //             n = t.getFullYear();
    //             break;
    //
    //         case "M":
    //             n = t.getMonth() + 1;
    //             break;
    //
    //         case "d":
    //             n = t.getDate();
    //             break;
    //
    //         case "w":
    //             n = ["日", "一", "二", "三", "四", "五", "六"][t.getDay()];
    //             break;
    //
    //         case "ww":
    //             n = t.WeekNumOfYear();
    //             break;
    //
    //         case "h":
    //             n = t.getHours();
    //             break;
    //
    //         case "m":
    //             n = t.getMinutes();
    //             break;
    //
    //         case "s":
    //             n = t.getSeconds();
    //     }
    //     return n;
    // }
    // this.maxDayOfDate = function (e) {
    //     (e = e || new Date()).setDate(1), e.setMonth(e.getMonth() + 1);
    //     var t = e.getTime() - 864e5;
    //     return new Date(t).getDate();
    // };
}

util.getSmConfig = function (t) {
    var n = getApp(),
        e = n.smconfig;
    e ? t(e) : util.request({
        url: "entry/wxapp/TemplateList",
        showLoading: 1,
        success: function (e) {
            n.smconfig = e.data, t(e.data);
        }
    });
}

util.requestSM = function (n) {
    var a = this;
    return new Promise(function (t, e) {
        // #ifdef MP
        a.getSmConfig(function (e) {
            wx.requestSubscribeMessage({
                tmplIds: e[n],
                complete: function (e) {
                    t();
                }
            });
        });
        // #endif

        // #ifndef MP
        t();
        // #endif

    });
}
module.exports = util;
